
struct GameLearningHints
{
    int gridScale;
};

class Game
{
public:
    virtual void Init() = 0;
    virtual string Name() = 0;
    virtual void NewGame() = 0;
    virtual void Step(ControllerState &controller) = 0;
    virtual ControllerState SimpleAI() = 0;
    
    inline const vector<string>& ObservedIntNames() const
    {
        return _observedIntNames;
    }
    
    inline const Frame& ActiveFrame() const
    {
        return _activeFrame;
    }

    inline const SpriteCollection& Collection() const
    {
        return _collection;
    }

protected:
    SpriteCollection _collection;
    Frame _activeFrame;
    vector<string> _observedIntNames;
};
